package com.doit.day07

object _05_隐式参数 {
  def main(args: Array[String]): Unit = {
    //正常的方法
    def add(a:Int,b:Int)={
      a+b
    }

    add(1,2)//正常调用，必须传入两个int类型的值

//    add()

    //implicit 这个关键字，代表此两个参数是可以隐式的被传入的
    //什么叫隐式的被传入呢？就是编译器会自动的找到这两个参数，然后帮你传进去
    //要求你：有这个两个隐式参数，他们不能有歧义
    //一般定义隐式参数，每种类型都只写一个
    implicit val a:Int = 1
    implicit val b:String = "2"
    def add1(implicit a:Int,b:String): Int ={
      a+b.toInt
    }

    add1

    //如果是柯里化的写法，那么只能够将implicit，写在最后一个括号中
    def add2(a:Int)(implicit b:Int): Int ={
      a+b
    }

    add2(2)



  }
}
